我想写一些PHP代码,自动调整通过表单上传到147x147px的任何图像,但我不知道如何去做(我是一个相对的PHP新手).
到目前为止,我已成功上传图片,识别文件类型并清理名称,但我想将调整大小功能添加到代码中.例如,我有一个2.3MB的测试图像,尺寸为1331x1331,我希望代码可以缩小尺寸,我猜测它也会大大压缩图像的文件大小.
到目前为止,我有以下内容:
if ($_FILES) {
//Put file properties into variables
$file_name = $_FILES['profile-image']['name'];
$file_size = $_FILES['profile-image']['size'];
$file_tmp_name = $_FILES['profile-image']['tmp_name'];
//Determine filetype
switch ($_FILES['profile-image']['type']) {
case 'image/jpeg': $ext = "jpg"; break;
case 'image/png': $ext = "png"; break;
default: $ext = ''; break;
}
if ($ext) {
//Check filesize
if ($file_size < 500000) {
//Process file - clean up filename and move to safe location
$n = "$file_name";
$n = ereg_replace("[^A-Za-z0-9.]", "", $n);
$n = strtolower($n);
$n = "avatars/$n";
move_uploaded_file($file_tmp_name, $n); …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用它为我的网站创建一个图像表单上传,我使用它的原因是因为它比自己做所有事情更安全(但如果有人可以指出另一个工作脚本我将不胜感激)
Fatal error: Namespace declaration statement has to be the very first statement in the script in C:\xampp\htdocs\project\lib\ImageUploader.php on line 4
Run Code Online (Sandbox Code Playgroud)
看一下源代码:
<br />
<b>Fatal error</b>: Namespace declaration statement has to be the very first statement in the script in <b>C:\xampp\htdocs\project\lib\ImageUploader.php</b> on line <b>4</b><br />
Run Code Online (Sandbox Code Playgroud)
我尝试过包含,需要它仍然无法正常工作.
我正在构建一个asp.net mvc应用程序,用户可以将图片附加到他们的个人资料中,也可以在系统的其他区域附加,例如仪表板上显示最近消息等的消息小工具.
当用户上传这些内容时,我想知道将它们存储在数据库或磁盘上是否更好.
数据库优势
易于备份整个数据库,并保留配置文件内容/图像与相关的配置文件/用户表
当我稍后在轨道上构建Web服务时,他们可以从一个位置(数据库)中提取所有与profiile相关的数据
文件系统的优点
从磁盘加载文件可能更快
还有其他什么好处
其他网站在哪里存储此类信息.对于类似这样的事情,我是否有点担心数据库性能?
也许有一种方法可以缓存从数据库中提取的图像一段时间?
或者,将这些图像存储在数据库中的想法如何,但是将它们复制到磁盘,以便Web服务器可以从那里加载它们?这似乎既提供了Db的备份和便利,同时提供了磁盘上文件的速度优势.
有问题的基础设施
摘要
在SO上阅读很多相关的线程,许多人现在趋向于SQL Server Filestream类型.然而,从我可以收集的内容(我可能是错的),当文件非常小时,没有太大的好处.然而,当文件是多个MB或更大时,文件流看起来会大大提高性能.
由于我的个人资料图片往往约为5kb,我决定将它们作为varbinary(max)存放在数据库的文件存储中.
在ASP.NET MVC中,我确实看到了一些性能问题,返回FileContentResults从这样的数据库中拉出的图像.所以如果在我的应用程序缓存中找不到该文件的位置,我最终会在磁盘上缓存该文件.
所以我想我选择了混合动力车;
在任何时候我都可以删除磁盘上的缓存文件夹,并且当重新请求图像时,它们将在第一次命中时被重新复制并在之后从缓存中提供.
我有型号产品:
def productFile(instance, filename):
return '/'.join( ['products', str(instance.id), filename] )
class Product(models.Model):
...
image = models.ImageField(
upload_to=productFile,
max_length=254, blank=True, null=True
)
...
Run Code Online (Sandbox Code Playgroud)
然后我有序列化器:
class ProductSerializer(serializers.ModelSerializer):
class Meta:
model = Product
fields = (
...
'image',
...
)
Run Code Online (Sandbox Code Playgroud)
然后我有意见:
class ProductViewSet(BaseViewSet, viewsets.ModelViewSet):
queryset = Product.objects.all()
serializer_class = ProductSerializer
Run Code Online (Sandbox Code Playgroud)
如何使用Postman上传图片?将图像上传到模型的最佳做法是什么?谢谢.
我看到使用pycurl的例子,但不能确定这是否可以使用?一些例子会有所帮助.谢谢.
在 flutter web 上,我从计算机中选择一个图像文件并获取一个 File 图像对象。然后我想将它上传到 Firebase 存储。对于 Android 和 iOS 版本的应用程序,我使用了 Firebase Cloud Function 和 http 多部分请求。它有效,但对于该应用程序的网络版本则无效。所以,
如何直接或通过 Cloud Functions 将 html 图像文件上传到 Firebase 存储?
file-upload image-upload google-cloud-functions firebase-storage flutter-web
我需要设置symfony2表单元素的值.我在Controllers Action中使用了一个doctrine2实体,一个Symfony\Component\Form\AbstractType和createForm()方法.
$saleDataForm = $this->createForm(new SaleType(), $sale);
Run Code Online (Sandbox Code Playgroud)
现在,我如何从该表单中获取元素,以及如何设置它的值?我想做这样的事情,但它不起作用:
$saleDataForm->get('image')->setValue('someimapge.jpg');
Run Code Online (Sandbox Code Playgroud)
FYI:我需要这样做,以正确渲染场(使用这种方法,我像场总是空的,我需要将其设置为内容的ImagePath呈现上传图像的预览)
我使用asp.net mvc4和razor语法开发了一个Web应用程序.我需要使用文件上传器上传图像,并在同一页面中显示图像的详细信息.
作为一个例子有一个"file uploader"和"submit button"在"contact page"我的应用程序.当我上传一个人的图像和click提交按钮时,它应该在页面的某个位置显示图像,其中的详细信息如图像名称,大小等.
有没有可能实现这一目标的方法?
这是我的控制器类的代码
public class FileUploadController : Controller
{
//
// GET: /FileUpload/
public ActionResult Index()
{
return View();
}
public ActionResult FileUpload()
{
return View();
}
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult FileUpload(HttpPostedFileBase uploadFile)
{
if (uploadFile.ContentLength > 0)
{
string filePath = Path.Combine(HttpContext.Server.MapPath("~/Img/"),
Path.GetFileName(uploadFile.FileName));
}
return View();
}
}
Run Code Online (Sandbox Code Playgroud)
这是视图的代码
<h2>FileUpload</h2>
@(Html.BeginForm("FileUpload", "FileUpload",FormMethod.Post, new { enctype = "multipart/form-data" }))
<input name="uploadFile" type="file" />
<input type="submit" …Run Code Online (Sandbox Code Playgroud) 我试过这样但是onDrop当我放弃它时方法不返回图像文件...
onDragStart(event, data: any) {
event.dataTransfer.setData('data', data);
}
onDrop(event, data: any) {
let dataTransfer = event.dataTransfer.getData('data');
event.preventDefault();
}
allowDrop(event) {
event.preventDefault();
}
<div (drop)="onDrop($event, dropData)" (dragover)="allowDrop($event)"></div>
<div (dragstart)="onDragStart($event, dragData)"></div>
Run Code Online (Sandbox Code Playgroud)
对此有何解决方案?
你能帮我把django表格上的图片上传工作吗?
class User_Profile(models.Model):
user = models.OneToOneField(User, unique=True, related_name='profile')
photo = models.ImageField(upload_to = 'profiles/', null=True, blank=True)
Run Code Online (Sandbox Code Playgroud)
class ProfileForm(forms.ModelForm):
class Meta:
model = User_Profile
exclude = ('user')
Run Code Online (Sandbox Code Playgroud)
if request.method == 'POST':
profile_form = ProfileForm(request.POST, instance=request.user.profile)
if profile_form.is_valid():
profile_form.save()
return HttpResponseRedirect('/panel/correct/')
else:
profile_form = ProfileForm(instance=request.user.profile)
Run Code Online (Sandbox Code Playgroud)
我的html表单已包含 enctype="multipart/form-data"
image-upload ×10
django ×2
file-upload ×2
php ×2
angular ×1
c# ×1
doctrine-orm ×1
flutter-web ×1
forms ×1
javascript ×1
profile ×1
python ×1
razor ×1
symfony ×1
tornado ×1